package proyecto.dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import proyecto.modelo.Telefono;

public class TelefonoDAO {

    public Telefono insertar(Telefono te) {
        String query = "INSERT INTO telefono(numerotelefonico,fecha,hora)" + "VALUES (?,?,?)";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, te.getNumero());
            stmt.setString(2, te.getFecha());
            stmt.setString(3, te.getHora());
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo insertar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        return te;
    }

    public int buscar(String num) {
        int idnum = 0;
        String query = "SELECT idtelefono FROM telefono WHERE numerotelefonico=" + num;
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            if (rs.next()) {
                idnum = rs.getInt("idtelefono");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        return idnum;
    }

    public Collection<Telefono> buscarAll(String nombre) {
        String query = "SELECT * FROM telefono WHERE (numerotelefonico like '%" + nombre + "%') OR (fecha like '%" + nombre + "%')";
        Collection<Telefono> c = new ArrayList<Telefono>();
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                Telefono te = new Telefono();
                te.setIdtelefono(rs.getInt("idtelefono"));
                te.setNumero(rs.getString("numerotelefonico"));
                te.setFechaOLD(rs.getString("fecha"));
                te.setHoraOLD(rs.getString("hora"));
                c.add(te);
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return c;
    }

    public void modificar(int idtelefono, String numero) {
        String query = "UPDATE telefono SET numerotelefonico = ? WHERE idtelefono = ?";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, numero);
            stmt.setInt(2, idtelefono);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo modificar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
    }

    public void eliminar(int idtelefono) {
        String query = "DELETE FROM telefono WHERE idtelefono = ?";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setInt(1, idtelefono);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo eliminar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
    }
}
